মাল্টিডাইমেনশনাল অ্যারে এবং ডাইনামিক অ্যারে হল C প্রোগ্রামিং ভাষায় ডেটা সংগঠনের দুটি গুরুত্বপূর্ণ কৌশল। নিচে এগুলোর ধারণা, প্রয়োগ, এবং উদাহরণসহ বিস্তারিত আলোচনা করা হলো।
১. মাল্টিডাইমেনশনাল অ্যারে (Multidimensional Arrays)
মাল্টিডাইমেনশনাল অ্যারে হল একটি অ্যারে যা একাধিক মাত্রায় ডেটা সংরক্ষণ করতে সক্ষম। সবচেয়ে সাধারণ উদাহরণ হল 2D অ্যারে (দুই-মাত্রিক অ্যারে), যা সারি এবং কলাম হিসেবে সংগঠিত হয়।
১.১ ডিক্লারেশন এবং ইনিশিয়ালাইজেশন
int matrix[2][3]; // 2D অ্যারে ডিক্লারেশন
int matrix[2][3] = {
{1, 2, 3},
{4, 5, 6}
}; // ইনিশিয়ালাইজেশন
১.২ অ্যারে অ্যাক্সেস
2D অ্যারের উপাদানগুলি ইনডেক্স ব্যবহার করে অ্যাক্সেস করা হয়।
উদাহরণ:
#include <stdio.h>
int main() {
int matrix[2][3] = {
{1, 2, 3},
{4, 5, 6}
};
// 2D অ্যারের উপাদানগুলি প্রিন্ট করা
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 3; j++) {
printf("%d ", matrix[i][j]); // Output: 1 2 3 4 5 6
}
printf("\n"); // নতুন লাইনে চলে যাওয়া
}
return 0;
}
২. ডাইনামিক অ্যারে (Dynamic Arrays)
ডাইনামিক অ্যারে হল এমন একটি অ্যারে যার সাইজ চলাকালীন সময়ে নির্ধারণ করা হয়। এটি মেমরি ব্যবস্থাপনার জন্য malloc() এবং free() ফাংশন ব্যবহার করে ডাইনামিকভাবে তৈরি করা হয়।
২.১ ডাইনামিক অ্যারে তৈরি করা
#include <stdio.h>
#include <stdlib.h> // malloc() এবং free() এর জন্য
int main() {
int n; // অ্যারের সাইজ
printf("Enter the size of the array: ");
scanf("%d", &n);
// ডাইনামিক অ্যারে তৈরি করা
int *arr = (int *)malloc(n * sizeof(int));
// অ্যারে ইনিশিয়ালাইজেশন
for (int i = 0; i < n; i++) {
arr[i] = i + 1; // 1 থেকে n পর্যন্ত মান
}
// অ্যারের উপাদানগুলি প্রিন্ট করা
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]); // Output: 1 2 3 ... n
}
printf("\n");
// মেমরি মুক্ত করা
free(arr);
return 0;
}
২.২ ডাইনামিক 2D অ্যারে তৈরি করা
#include <stdio.h>
#include <stdlib.h>
int main() {
int rows, cols;
printf("Enter number of rows and columns: ");
scanf("%d %d", &rows, &cols);
// ডাইনামিক 2D অ্যারে তৈরি করা
int **matrix = (int **)malloc(rows * sizeof(int *));
for (int i = 0; i < rows; i++) {
matrix[i] = (int *)malloc(cols * sizeof(int));
}
// 2D অ্যারে ইনিশিয়ালাইজেশন
int count = 1;
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
matrix[i][j] = count++; // 1 থেকে n পর্যন্ত মান
}
}
// 2D অ্যারের উপাদানগুলি প্রিন্ট করা
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
printf("%d ", matrix[i][j]);
}
printf("\n"); // নতুন লাইনে চলে যাওয়া
}
// মেমরি মুক্ত করা
for (int i = 0; i < rows; i++) {
free(matrix[i]); // প্রতিটি সারির জন্য মেমরি মুক্ত করা
}
free(matrix); // প্রধান অ্যারের জন্য মেমরি মুক্ত করা
return 0;
}
Read more